package command_pattern.ex2;

import java.io.*;
import java.util.ArrayList;

/**
 * @author 申书航
 * @version 1.0
 * 工具类，用于文件操作，特别是保存和读取命令。
 */
public class FileUtil {

    private static final String FILE_NAME = "config.log";

    /**
     * 将命令列表写入文件
     * @param commands 命令列表
     */
    public static void writeToFile(ArrayList<Command> commands) {
        try(FileOutputStream fos = new FileOutputStream(FILE_NAME);
            ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(fos))) {
            oos.writeObject(commands);
        } catch (IOException e) {
            System.out.println("保存命令失败");
            e.printStackTrace();
        }
    }

    /**
     * 从文件读取命令列表
     * @return 读取到的命令列表，如果读取失败则返回null
     */
    public static ArrayList readCommand() {
        try(FileInputStream fis = new FileInputStream(FILE_NAME);
            ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(fis))) {
            return (ArrayList) ois.readObject();
        } catch (Exception e) {
            System.out.println("读取命令失败");
            e.printStackTrace();
            return null;
        }
    }
}
